const Router = require('koa-router')
const router = new Router()
// 拿到user 表的控制逻辑对象
const user = require('../control/user')
const article = require('../control/article')
const comment = require('../control/comment')
const admin = require('../control/admin')
const upload = require('../control/upload')


// 设计主页
router.get("/", user.keepLog, article.getList)
// 处理用户 行为
// router.get(/^\/user\/(?=reg|login)/, async ctx => {
//   // show = true 注册 false 登录
//   const show = /reg$/.test(ctx.path)
//   await ctx.render("register", {show})
// })
router.get("/user/reg", async ctx => {
  await ctx.render("register",{show: true})
})
router.get("/user/login", async ctx => {
  await ctx.render("register", {show: false})
})

// 用户登录  检查登录  ==>  登录加载文章
router.post('/user/reg', user.reg)
// 用户注册
router.post('/user/login', user.login)
// 用户退出
router.get('/user/logout', user.logout)


// 用户发表文章界面
router.get('/article', user.keepLog, article.addPage)
// 文章添加  
router.post('/article', user.keepLog, article.add)
// 文章的详情页 路由
router.get("/article/:id", user.keepLog, article.details)


// 文章列表分页  id 没传默认第一页
router.get("/page/:id", article.getList)


// 发表评论
router.post("/comment",user.keepLog, comment.save)


// 后台管理  文章 评论 头像
router.get("/admin/:id", user.keepLog, admin.index)

// ① admin/user 管理页获取用户信息
router.get("/user/users", user.users)
//  删除用户
router.delete("/user/:id", user.amputate)

// ② admin/article 获取该用户文章列表
router.get("/user/articles", article.userArticles)
// 删除用户个人文章
router.delete("/article/:id", article.amputate)

// ③ admin/comment 获取用户评论列表
router.get("/user/comments", comment.userComments)
// 删除评论
router.delete("/comment/:id", comment.amputate)

// 头像上传
router.post("/admin/userface", upload.save.single("file"), user.setAvatar)


// 404 
router.get("*", async ctx => {
  await ctx.render("404", {
    title: "404 not found"
  })
})

module.exports = router

// 对用户的动作 /user
// 登录  /user/login
// 注册  /user/reg
// 退出  /user/logout

// 新增用户 post > /user ---> 新增用户信息
// 删除用户 delete > /user ---> 带上要删除的用户的ID
// 修改用户资料
// 查询用户资料